/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
//LC 350  https://leetcode.com/problems/intersection-of-two-arrays-ii/
// var intersect = function(nums1, nums2) {
//     let map = {};
//     let result = [];
//     for(let i = 0; i < nums1.length; i++){
//         if(map[nums1[i]]){ //if the number is already in the map, increment the count
//             map[nums1[i]]++;
//         }else{
//             map[nums1[i]] = 1; //if the number is not in the map, add it to the map and set the count to 1
//         }
//     }
//     //对于nums2中的每个数字，如果在map中，则将其添加到result中，并将map中的数字减一 确保不会出现重复的数字
//     for(let i = 0; i < nums2.length; i++){
//         if(map[nums2[i]]){
//             result.push(nums2[i]);  //if the number is in the map, push it to the result array
//             map[nums2[i]]--;
//         }
//     }
//     return result;
// };
//
// // @lc code=end
// nums1 = [1, 2, 2, 1]
// nums2 = [2, 2]
// console.log(intersect(nums1, nums2))

var intersect = function (nums1, nums2) {
  let map = {};
  let result = [];
  for (let i = 0; i < nums1.length; i++) {
    if (map[nums1[i]] === undefined) {  //if the number is not in the map, add it to the map and set the count to 1
      map[nums1[i]]++;
    } else {
      map[nums1[i]] = 1;
    }
  }
  //对于nums2中的每个数字，如果在map中，则将其添加到result中，并将map中的数字减一 确保不会出现重复的数字
  for (let num of nums2) {
    if (map[num] !== undefined) {
      result.push(num);  //if the number is in the map, push it to the result array
      map[num]--;
    }
  }
  return result;
};
nums1 = [1, 2, 2, 1]
nums2 = [2, 2]
console.log(intersect(nums1, nums2))